Existuje hypoteticka moznost spustenia inej aplikacie v mojej?
Otázka od: Vlko II.
22. 8. 2004 15:43
Existuje nejaka hypoteticka moznost ako spustit lubovolnu exe aplikaciu
trevars
v mdi, popripade v nejakom paneli?
Trosku som pogooglil a nasiel som len moznost prepojit cez std in a out pre
konzolovu aplikaciu.
Dalej som edukacne skusal pomocou existujucich zaregistrovanych class
(z uz beziacich aplikacii) vytvorit pomocov CreateWindow, ale ani tadialto
cesta asi nevedie, vytvaralo to prazdne okna bez obsluhovacej funkcie.
nieco taketo:
(kde po je pointer na handle a classname: ClassName: array[0..127] of
Char;)
GetClassName(HWND(po), Classname, SizeOf(ClassName));
results.Items.Add(Classname);
pomInstance := GetWindowLong(HWND(po), GWL_HINSTANCE );
GHWND := CreateWindowEx(
WS_EX_TOOLWINDOW ,
Classname,
'Generic Application',
WS_EX_TOOLWINDOW or WS_HSCROLL or WS_VSCROLL,
0,
0,
integer(CW_USEDEFAULT),
integer(CW_USEDEFAULT),
form1.Handle,
0,
pomInstance,
nil
);
if GHWND<>0 then
results.Items.Add('!!!OK!!!');
ShowWindow(GHWND,SW_SHOW )
nuz a posielam mu postupne vsetky handle na beziace aplikacie, nuz
a vytvori to uz zname prazdne okna
Nuz dalej len cisto teoreticky uvazujem, ze mozu existovat 2 cesty
1. existuje nejaky nedokumentovany parameter pre CreateProcess, ktory
urobi pozadovane vytvorenie child okna
alebo
2. nejakym sposobom premapovat WndProc funkciu na vlastny panel.
Nuz teda neviem, stretol sa niekto s aplikaciou, ktora nieco taketo
dokaze? Popripade videl niekto nejaky shell replacer, ktory by take
nieco dokazal? Alebo je to boj s veternymi mlynmi a taketo nieco nie
je mozne?
Vdaka za kazdu odpoved
Vlko
BTW: Keby niekoho zaujimalo naco to uz len tomu cloveku moze byt?
Nuz chcel by som si spravit take zaobalenie gvimka, nejaky ten tabbed
browsing, adresarovu strukturu nalavo, ftp a tak Alebo chcem moc?
Mozno nakoniec by som mal opat sa mrknut do cecka a dorobit to priamo
ale toto riesenie sa mi zda univerzalnejsie a menej pracnejsie.
--
--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net